Location-independent links to content at online content management systems

ABSTRACT

The disclosed embodiments provide a system that facilitates access to content. During operation, the system tracks a content item at an online content management system using an identifier for the content item. Next, the system uses the identifier to provide a link to the content item, wherein the link enables access to the content item from an electronic device independently of a location of the content item within the online content management system.

BACKGROUND

1. Field

The disclosed embodiments relate to techniques for managing access tocontent. More specifically, the disclosed embodiments relate totechniques for providing location-independent links to content at onlinecontent management systems.

2. Related Art

Content on electronic devices is commonly synchronized, stored, shared,and/or backed up on online content management systems such as filehosting services, cloud storage services, and/or remote backup services.For example, images, audio, video, documents, executables, and/or othertypes of content may be stored on a network-enabled electronic devicesuch as a personal computer, laptop computer, portable media player,tablet computer, and/or mobile phone. A user of the electronic devicemay also have a user account with a cloud storage service that allowscopies of the content to be stored and/or backed up with the cloudstorage service. The cloud storage service may further transmit thecopies to other electronic devices of the user and/or other users whoare authorized to access the files, thus synchronizing the contentbetween the cloud storage service and electronic devices.

However, changes to names and/or locations of content on online contentmanagement systems may not be propagated to links to the content. Forexample, a first user may share a file on a cloud storage service with asecond user by providing a link to the file to the other user. Thesecond user may then access (e.g., download) the file by selectingand/or activating the link. On the other hand, the link may be broken ifthe first user deletes the file, moves the file, renames the file,and/or otherwise changes the file's location (e.g., path) on the cloudstorage service. Continued access to the file by the second user maythus require the first user to provide an updated link to the file,which may be inconvenient and/or tedious to one or both users.

Consequently, access to content at online content management systems maybe facilitated by location-independent mechanisms for linking to thecontent.

SUMMARY

The disclosed embodiments provide a system that facilitates access tocontent. During operation, the system tracks a content item at an onlinecontent management system using an identifier for the content item.Next, the system uses the identifier to provide a link to the contentitem, wherein the link enables access to the content item from anelectronic device independently of a location of the content item withinthe online content management system.

In some embodiments, tracking the content item at the online contentmanagement system using the identifier involves maintaining a mapping ofthe identifier to the location of the content item.

In some embodiments, maintaining the mapping of the identifier to thelocation of the content item involves updating the mapping based on achange associated with at least one of:

-   -   (i) renaming of the content item;    -   (ii) moving of the content item;    -   (iii) deletion of the content item from a user account with the        online content management system; and    -   (iv) copying of the content item.

In some embodiments, tracking the content item at the online contentmanagement system using the identifier further involves updating theonline content management system with the change after the mapping isupdated.

In some embodiments, updating the mapping based on the change involveswriting the mapping to a previous version of the mapping, and writingthe change to the mapping.

In some embodiments, using the identifier to provide the link to thecontent item involves:

-   -   (i) storing the identifier on the electronic device;    -   (ii) attempting to access the content item using the stored        identifier and the mapping; and    -   (iii) upon detecting a failure to access the content item using        the mapping, using the previous version of the mapping to access        the content item.

In some embodiments, storing the identifier on the electronic deviceinvolves encrypting the identifier using a key associated with a user ofthe electronic device.

In some embodiments, the link is provided based on user input associatedwith the content item.

In some embodiments, the user input specifies at least one of enablingof the link and disabling of the link.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 shows a schematic of a system in accordance with the disclosedembodiments.

FIG. 2 shows a system for facilitating access to content in accordancewith the disclosed embodiments.

FIG. 3 shows an exemplary tracking of a content item at an onlinecontent management system in accordance with the disclosed embodiments.

FIG. 4 shows a flowchart illustrating the process of facilitating accessto content in accordance with the disclosed embodiments.

FIG. 5 shows a computer system in accordance with the disclosedembodiments.

In the figures, like reference numerals refer to the same figureelements.

DETAILED DESCRIPTION

The following description is presented to enable any person skilled inthe art to make and use the embodiments, and is provided in the contextof a particular application and its requirements. Various modificationsto the disclosed embodiments will be readily apparent to those skilledin the art, and the general principles defined herein may be applied toother embodiments and applications without departing from the spirit andscope of the present disclosure. Thus, the present invention is notlimited to the embodiments shown, but is to be accorded the widest scopeconsistent with the principles and features disclosed herein.

The data structures and code described in this detailed description aretypically stored on a computer-readable storage medium, which may be anydevice or medium that can store code and/or data for use by a computersystem. The computer-readable storage medium includes, but is notlimited to, volatile memory, non-volatile memory, magnetic and opticalstorage devices such as disk drives, magnetic tape, CDs (compact discs),DVDs (digital versatile discs or digital video discs), or other mediacapable of storing code and/or data now known or later developed.

The methods and processes described in the detailed description sectioncan be embodied as code and/or data, which can be stored in acomputer-readable storage medium as described above. When a computersystem reads and executes the code and/or data stored on thecomputer-readable storage medium, the computer system performs themethods and processes embodied as data structures and code and storedwithin the computer-readable storage medium.

Furthermore, methods and processes described herein can be included inhardware modules or apparatus. These modules or apparatus may include,but are not limited to, an application-specific integrated circuit(ASIC) chip, a field-programmable gate array (FPGA), a dedicated orshared processor that executes a particular software module or a pieceof code at a particular time, and/or other programmable-logic devicesnow known or later developed. When the hardware modules or apparatus areactivated, they perform the methods and processes included within them.

The disclosed embodiments provide a method and system for facilitatingaccess to content. The content may include executables, documents,images, audio, video, and/or other files that may be accessed and/orviewed from electronic devices such as personal computers, laptopcomputers, tablet computers, mobile phones, personal digital assistants,portable media players, and/or digital media receivers. The content mayalso be synchronized between the electronic devices and an onlinecontent management system that provides a file hosting service, cloudstorage service, and/or remote backup service to users of the electronicdevices. For example, the online content management system may allowusers of the electronic devices to store, share, and/or backup contentfrom the electronic devices.

More specifically, the disclosed embodiments provide a method and systemfor providing location-independent links to the content at the onlinecontent management system. Each content item (e.g., file, directory,sub-directory, container, and/or other data item) at the online contentmanagement system may be associated with a unique identifier, which isused to track the content item. For example, a mapping of the identifierto the content item's location may be maintained and/or updated based onchanges associated with renaming of the content item, moving of thecontent item, editing of the content item, deletion of the content itemfrom a user account with the online content management system, and/orcopying of the content item. The identifier may also be used to providea link to the content item independently of the content item's location.For example, the link may specify the identifier, and the identifier maybe used to retrieve the mapping and locate the content item.Consequently, the link may remain valid until the link is disabled bythe online content management system.

FIG. 1 shows a schematic of a system in accordance with the disclosedembodiments. As shown in FIG. 1, the system corresponds to a contentmanagement environment 105, which includes a set of client devices 110Aand 110B (collectively 110) and an online content management system 120interconnected by one or more networks 118. Networks 118 may include alocal area network (LAN), wide area network (WAN), personal area network(PAN), virtual private network, intranet, cellular network, WiFinetwork, Bluetooth (Bluetooth™ is a registered trademark of BluetoothSIG, Inc.) network, universal serial bus (USB) network, and/or Ethernetnetwork. Various aspects of client devices 110 and online contentmanagement system 120 are discussed below.

Each client device 110 may selectively execute a content managementclient application 112A and 112B (collectively 112) (also referred to asa “content management client”) that may be used to access content itemsstored within online content management system 120. While only twoclient devices 110A and 110B are shown in FIG. 1 for purposes ofclarity, those skilled in the art will appreciate that many clientdevices 110 may simultaneously connect through network(s) 118 to onlinecontent management system 120 at any given time. Examples of suitableclient devices 110 include, but are not limited to, personal computers;mobile computing devices, such as laptop computers and/or tabletcomputers; handheld devices, such as a smartphone (e.g., an IPHONE®,BLACKBERRY®, or ANDROID™-based smartphone), personal digital assistant,and/or portable media player; digital media receivers; and/or othernetwork-enabled electronic devices.

In one or more embodiments, content management client application 112supports automatic synchronization between client devices 110 and onlinecontent management system 120. For example, content management clientapplication 112 may automatically synchronize changes associated with adesignated directory (e.g., new, deleted, modified, copied, and/or movedfiles and/or subdirectories within the directory) between each clientdevice 110 and online content management system 120. To perform suchsynchronization, content management client application 112 may monitor alocal directory corresponding to the designated directory on clientdevices 110 and synchronize changes to the local directory with a remotedirectory corresponding to the designated directory on online contentmanagement system 120. Conversely, content management client application112 may identify changes to the remote directory and propagate thechanges to the local directory.

Synchronized copies of a content item 114A, 114B and 114C may thus bemaintained on client devices 110A and 110B and within online contentmanagement system 120, respectively. Alternatively, client devices 110may provide a file-browser type interface (not shown) for directlymanipulating the content items stored on online content managementsystem 120 without maintaining a local copy. Client devices 110 may alsoinclude applications 116A and 116B (collectively 116) that manipulatecopies of content items 114A and 114B. For example, applications 116 maybe used to create, modify, process, and/or otherwise use documents,images, video, audio, and/or other content items (e.g., content items114) on client devices 110.

Each client device 110 may store a local, synchronized copy of a contentitem from online content management system 120 in any suitable format.When content management client application 112 presents content itemsthat are stored within online content management system 120 to a user,the content items may be arranged in directories, which may be arrangedin other directories, or in any other arbitrary arrangement and/ordirectory structure supported by online content management system 120and/or determined by the user. Consequently, each user's content itemstorage architecture may be considerably different from the next, and insome instances, the content item storage architecture may be implementedto maximize storage and content item retrieval efficiency.

Online content management system 120 stores content items and managesaccess to those content items via client devices 110. Online contentmanagement system 120 and its components may be implemented using anyappropriate hardware and software that supports file serving, storage,and retrieval functions. For example, online content management system120 may be implemented using one or more servers, cloud storage,network-attached storage (NAS), a storage area network (SAN), aredundant array of inexpensive disks (RAID) system, and/or othernetwork-accessible storage. Online content management system 120 mayadditionally store the content items using a variety of filesystemarchitectures and/or hierarchies and obscure the locations and/ormechanisms involved in storing the data from client devices 110.

As shown in FIG. 1, online content management system 120 includes aninterface module 122, an account module 124, a content-item-updatingmodule 126, and a data store 128. The components of online contentmanagement system 120 are discussed below.

Interface module 122 may facilitate content item access and content itemstorage operations among online content management system 120 and clientdevices 110. Interface module 122 may receive content items from andsend content items to client devices 110 consistent with each user'spreferences for sharing content items. Interface module 122 may also actas the counterpart to a client-side file-explorer style user interfacethat allows a user to manipulate content items directly stored on onlinecontent management system 120.

In one or more embodiments, software on client devices 110 may integratenetwork-stored content items with the client's local filesystem toenable the user to manipulate network-stored content items through thesame user interface (UI) used to manipulate content items on the localfilesystem, such as through a file explorer, file finder, file chooser,and/or browser application. As an alternative or supplement to theclient-side file-explorer interface, interface module 122 may provide aweb interface for client devices 110 to access (e.g., via application116) and allow the user to manipulate content items stored within onlinecontent management system 120. In this way, the user can directlymanipulate content items stored within online content management system120.

Data store 128 may store content items such as those uploaded usingclient devices 110 and/or other suitable electronic devices. In theembodiment illustrated in FIG. 1, client device 110A, which isassociated with a first user, is shown as locally storing at least onecontent item 114A, and client device 110B, which is associated with asecond user, is shown as locally storing at least one content item 114B.A copy of the locally stored content item 114C may also be maintained indata store 128 of online content management system 120. Consequently,content items 114A, 114B and 114C may be local versions of the sameshared document that reside on client device 110A, client device 110Band online content management system 120, respectively. Note that clientdevices 110A and 110B may also store other content items that arereplicated on online content management system 120, but are not sharedwith other client devices.

Data store 128 may maintain information identifying the user,information describing the user's file directory, and/or otherinformation in a file journal that is maintained for each user. The filejournal may be maintained on online content management system 120 and/oras a “server-side file journal” on both online content management system120 and locally on each client device 110. The file journal may be usedto synchronize various copies of a particular content item that areassociated with a user's account.

As a particular example, in the embodiment shown in FIG. 1, the systemmay be configured so that any changes that are made to content item 114Aon particular client device 110A may also be automatically reflected inthe copy of content item 114C stored within online content managementsystem 120 and the copy of the content item 114B on client device 110B.Similarly, any changes that are made to content item 114C on onlinecontent management system 120 may also be automatically reflected in thecopy of content item 114A stored on client device 110A, and the copy ofcontent item 114B stored on client device 110B.

Moreover, content items 114A and 114B may be stored in local cacheswithin content management clients 112A and 112B, respectively.Alternatively, content items 114A and 114B may be stored in localfilesystems within content management clients 112A and 112B. In somesituations, content items 114A and 114B are stored in filesystem spacethat is reserved for content management clients 112A and 112B. In othersituations, content items 114A and 114B are stored in normal filesystemspace that is not reserved for content management clients 112A and 112B.

Account module 124 may track content items stored in data store 128 andentries in the server-side file journal for each content item. As usersgrant content-item-access permissions to other users, account module 124may update the server-side file journal associated with each relevantuser in data store 128. Account module 124 may also track client devices110 that are associated with each user's account. For example, a usermay want to share all content items among his/her desktop computer,tablet computer, and mobile device. To make such a sharing arrangementseamless to the user, the user's single account on online contentmanagement system 120 may be associated with each of the user'srespective client devices. An application running on each respectiveclient device 110 may help to coordinate synchronization of contentitems on the client device with corresponding versions of the contentitems within the user's account in online content management system 120and/or on the user's various other client devices.

Content-item-updating module 126 may maintain consistency amongdifferent copies (versions) of a content item 114A, 114B and 114C thatare located in client device 110A, client device 110B and online contentmanagement system 120, respectively. This can be complicated, becausethe different versions 114A, 114B and 114C of the same shared contentitems may be simultaneously changed at client devices 110A-B and onlinecontent management system 120. Hence, online content management system120 may enforce an updating policy to resolve conflicting updates todifferent versions of the same content item. For example, the copy ofcontent item 114C on online content management system 120 may bedesignated as the master copy, and updates to copies 114A and 114B ofthe content item may be serialized and applied one-at-a-time to themaster copy 114C before being propagated back to copies 114A and 114Blocated on client devices 110A and 110B.

In one or more embodiments, content management environment 105 includesfunctionality to facilitate access to content items in online contentmanagement system 120 from client devices 110. More specifically, onlinecontent management system 120 may provide location-independent linksthat enable access to the content items from client devices 110. Asdiscussed in further detail below, the location-independent links may beimplemented using mappings of unique identifiers for the content itemsto the content items' locations within online content management system120. In turn, the location-independent links may direct client devices110 to the corresponding content items even if the content items aremoved, renamed, copied, edited, and/or deleted from user accounts withonline content management system 120.

FIG. 2 shows a system for facilitating access to content in accordancewith the disclosed embodiments. As mentioned above, users typicallyinteract with online content management system 120 through anapplication 212 on an electronic device 200, such as content managementclient applications 112 and/or applications 116 executing on clientdevices 110 of FIG. 1. To facilitate these user interactions,application 212 may provide one or more links 206 to content itemsstored on online content management system 120.

More specifically, links 206 may allow the content items to be accessedfrom electronic device 200 independently of the locations of the contentitems within online content management system 120. For example, links206 may remain valid after changes to the names, paths, copies, and/orcontents of the content items have been made. Links 206 may further beused to access the content items and/or copies of the content itemsafter the content items are deleted from one or more user accounts withonline content management system 120. In turn, application 212 and/orelectronic device 200 may use links 206 to display the correspondingcontent items to a user and/or copy the content items to a content-itemcache 208 on electronic device 200.

Prior to use of links 206 by the user, application 212 may verify thatthe user is logged into online content management system 120. If theuser is not logged into online content management system 120,application 212 may provide a dialog box and/or one or more otheruser-interface elements that allow the user to provide authenticationcredentials (e.g., username and password) for a user account and/orcreate a user account with online content management system 120.

Once the user is authenticated with online content management system120, application 212 may enable access to the user's content items withonline content management system 120. For example, application 212 mayallow the user to navigate a hierarchical directory structure containingdirectories, subdirectories, files, and/or other content itemsassociated with the user account through a file chooser. Application 212may also provide a “saved links” and/or “collections” feature thatenables direct access to the content items through links 206 withoutnavigating the directory structure.

To enable use of links 206 independently of the corresponding contentitems' locations, a write apparatus 202 in online content managementsystem 120 may track each content item using an identifier for thecontent item. Write apparatus 202 may be implemented bycontent-item-updating module 126 of FIG. 1 and/or another component thathandles writes to content items in online content management system 120.After a content item is added to data store 128 and/or online contentmanagement system 120, write apparatus 202 may assign a universallyunique identifier (UUID), globally unique identifier (GUID), and/orother distinct identifier to the content item. For example, writeapparatus 202 may use a 128-bit number to uniquely identify the contentitem within online content management system 120.

Write apparatus 202 may also maintain a mapping of the identifier to thelocation of the content item in a mappings store 204 within onlinecontent management system 120. For example, write apparatus 202 may mapthe identifier to the path and filename of the content item using one ormore tables in a relational database. If a copy of the content item ismade, write apparatus 202 may propagate the same identifier to the copyand use the identifier to map to the path and filename of the copy. Inother words, write apparatus 202 may use the same identifier to trackmultiple copies of a content item.

Moreover, write apparatus 202 may ensure that any changes to the contentitem are reflected in the mapping, including renaming of the contentitem, moving of the content item, deletion of the content item from auser account with the online content management system, and/or copyingof the content item. For example, write apparatus 202 may receive arequest to move and/or rename the content item from “/A/1.jpg” to“/B/2.jpg” through interface module 122. In response to the request,write apparatus 202 may retrieve the mapping for the content item frommappings store 204 and change the location of the content item in themapping from “/A/1.jpg” to “/B/2.jpg.” During such updates to themapping, write apparatus 202 may maintain the same identifier for thecontent item to enable tracking of the content item using the identifieracross changes to the name, location, contents, users, and/or copies ofthe content item.

In one or more embodiments, write apparatus 202 coordinates updates todata store 128, mappings store 204, and/or other stores of data and/ormetadata associated with the content item by performing “optimistic”writes to mappings store 204. During an “optimistic” write, writeapparatus 202 may update the mapping with a change to the content itembefore updating data store 128 and/or online content management system120 with the change. As a result, the update to the mapping may be madeunder the assumption that the subsequent update to online contentmanagement system 120 succeeds. However, if the subsequent update fails,the content item's name and/or location in the mapping may beinconsistent with the state of online content management system 120.

To handle such inconsistencies, write apparatus 202 may keep a previousversion of the mapping for the content item in mappings store 204. Inturn, write apparatus 202 may update the mapping with a change bywriting the mapping to the previous version of the mapping beforewriting the change to the mapping. If the change subsequently fails in aserver file journal and/or other repository containing state informationfor online content management system 120, online content managementsystem 120 may fall back on the previous version of the mapping tolocate the content item.

More specifically, a read apparatus 203 in online content managementsystem 120 may provide a location-independent link (e.g., links 206) toa content item by processing read requests from electronic device 200and/or other electronic devices using the link. For example, readapparatus 203 may correspond to a content-item-accessing module thatcoordinates read accesses to content items in online content managementsystem 120.

To enable read accesses from the electronic device(s) using the link,read apparatus 203 may store the identifier for the content item onelectronic device 200. For example, read apparatus 203 may transmit thelink to application 212 as a hyperlink containing the identifier, andapplication 212 may store the hyperlink and/or identifier incontent-item cache 208 and/or another repository on electronic device200. Application 212 may further encrypt the stored identifier using akey associated with the user of the electronic device to obscure thesource of the content item. For example, the identifier may be encryptedusing two different keys on two different electronic devices of twodifferent users to prevent an attacker from discerning that theencrypted identifiers on the electronic devices refer to the samecontent item.

Upon receiving a read request for the content item through the link,read apparatus 203 may attempt to access the content item using theidentifier (e.g., as obtained from the read request and/or link) and thecorresponding mapping for the content item from mappings store 204. Ifthe mapping is consistent with the state of online content managementsystem 120, read apparatus 203 may be able to read the content item atthe location stated in the mapping. Conversely, if the mapping is notconsistent with the state of online content management system 120 (e.g.,if a change is made to the mapping but a subsequent, correspondingchange to the state of online content management system 120 fails), readapparatus 203 may not be able to access the content item at thelocation. As a result, read apparatus 203 may use the previous versionof the mapping to access the content item upon detecting a failure toaccess the content item using the mapping. Resolving inconsistenciesbetween mappings of content items and states of online contentmanagement systems containing the content items is discussed in furtherdetail below with respect to FIG. 3.

Finally, write apparatus 202 and/or read apparatus 203 may enable and/ordisable links 206 based on user input associated with the correspondingcontent items. For example, write apparatus 202 and/or read apparatus203 may provide a location-independent link to a content item afterreceiving a request to enable the link from a user associated withcreating and/or uploading a content item and/or a user with whom thecontent item is shared. On the other hand, write apparatus 202 and/orread apparatus 203 may disable access to the content item through thelink after receiving a subsequent request from the user(s) to disablesharing of the content item, delete the content item from one or moreuser accounts at online content management system 120, and/or otherwisedisable the location-independent functionality of the link.

Consequently, the use of identifiers to track content items at onlinecontent management system 120 and provide location-independent links tothe content items may facilitate access to the content items fromelectronic device 200. For example, the links may allow a user ofelectronic device 200 to access a photo album containing a collection ofimages from a set of other users, independently of changes to theimages' names, locations, copies, and/or contents made by the userand/or other users. Similarly, the identifiers and/or links may allowthe user to locate and/or identify the corresponding content itemswithout navigating a directory structure containing the content items,thus streamlining the user's use of both application 212 and onlinecontent management system 120.

Those skilled in the art will appreciate that the system of FIG. 2 maybe implemented in a variety of ways. As mentioned above, online contentmanagement system 120 may utilize a number of storage mechanisms and/orfilesystem architectures to provide data store 128 and/or mappings store204. In addition, mappings for the content items may be stored asmetadata for the content items in data store 128 instead of in aseparate mappings store 204. For example, if relational-database recordswithin data store 128 include the content items and metadata related tothe content items' locations, mappings for the content items may becreated from fields in the relational-database records corresponding tothe content items' identifiers and the content items' locations.

FIG. 3 shows an exemplary tracking of a content item at an onlinecontent management system (e.g., online content management system 120 ofFIG. 1) in accordance with the disclosed embodiments. The tracking maybegin with a change corresponding to the creation of the content item atthe online content management system. For example, the change may causethe content item to be created at and/or uploaded to a first location(e.g., “Location 1”) within the online content management system. Inaddition, the change may result in the creation of an identifier (e.g.,“ID”) for the content item, as well as a mapping of the identifier tothe first location (e.g., “Current=Location 1”). After mapping 302 iscreated, a state 304 of the online content management system is updatedwith the change. For example, the change may be added to state 304 as anentry to a server-side file journal for the online content managementsystem, with the entry setting the path of the content item to the firstlocation (e.g., “Path=Location 1”).

Next, a second change may be made to the content item. For example, thesecond change may cause the content item to be moved from the firstlocation to a second location (e.g., “Location 2”) within the onlinecontent management system. In turn, the change may be propagated acrossthe online content management system by writing the first location to aprevious version of mapping 302 (e.g., “Previous=Location 1”), writingthe change to mapping 302 (e.g., “Current=Location 2”), and thenupdating state 304 with the change (e.g., “Path=Location 2”).

After the second change is made, the content item is accessed through alocation-independent link to the content item. To access the contentitem, the identifier may be obtained from the link and matched tomapping 302, and the content item may be read from the locationspecified in mapping 302 (e.g., “Location 2”).

On the other hand, a subsequent change to the content item may fail atthe online content management system. For example, the change may bereceived as a request to move the content item from the second locationto a third location (e.g., “Location 3”) within the online contentmanagement system. During processing of the change, mapping 302 may be“optimistically” updated with the change, while a subsequent attempt toupdate state 304 with the change may fail. Mapping 302 may thus indicatethat the content item is currently located at the third location (e.g.,“Current=Location 3”) and was previously located at the second location(e.g., “Previous=Location 2”), and state 304 may specify that thecontent item is located at the second location (e.g., “Path=Location2”).

In turn, subsequent use of the link may result in a failure to accessthe content item using the current version of mapping 302 (e.g.,“Location 3”). However, the existence of the previous version of mapping302 may allow the content item to be accessed through the link at thelocation specified in state 304 (e.g., “Location 2”). In other words,the previous version of mapping 302 may provide a fallback for theinconsistency between the current version of mapping 302 and state 304.The inconsistency may then be resolved by reverting the current versionof the mapping to the second location or making one or more additionalattempts to update state 304 so that the content item's path refers tothe third location.

FIG. 4 shows a flowchart illustrating the process of facilitating accessto content in accordance with the disclosed embodiments. In one or moreembodiments, one or more of the steps may be omitted, repeated, and/orperformed in a different order. Accordingly, the specific arrangement ofsteps shown in FIG. 4 should not be construed as limiting the scope ofthe technique.

Initially, a content item at an online content management system istracked using an identifier for the content item. To track the contentitem, a mapping of the identifier to the location of the content item ismaintained (operation 402). For example, the mapping may map a 128-bitvalue that uniquely identifies the content item to a path and filenameof the content item within the online content management system. Themapping may also be updated based on a change associated with thecontent item (operation 404), such as renaming of the content item,moving of the content item, deletion of the content item from a useraccount with the online content management system, and/or copying of thecontent item. If the content item is not changed, the mapping is notupdated.

If the content item is changed, the mapping is first written to aprevious version of the mapping (operation 406), then the change iswritten to the mapping (operation 408), and finally the online contentmanagement system is updated with the change (operation 410). Suchupdating of the mapping and previous version of the mapping beforeupdating of the online content management system may facilitateefficient and/or effective resolution of inconsistencies between themapping and the state of the online content management system.

A link to the content item may also be provided (operation 412). Thelink may enable access to the content item from an electronic deviceindependently of a location of the content item within the onlinecontent management system. In addition, the link may be provided basedon user input associated with the content item. For example, the linkmay not be provided if the user input specifies and/or requestsdisabling of the link. If the link is not to be provided, the mappingmay continue to be maintained (operation 424) to facilitate subsequentuse and/or enabling of the link.

On the other hand, the link may be provided if the user input specifiesand/or requests enabling of the link and/or the content item isconfigured for use with the link by default. If the link is to beprovided, the identifier is stored on the electronic device (operation414). The identifier may also be encrypted using a key associated with auser of the electronic device to obscure the source of the content item.Next, an attempt is made to access the content item using the storedidentifier and the mapping (operation 416). The attempt may fail(operation 418) if the mapping is inconsistent with the state of theonline content management system. If the attempt is successful (e.g.,the mapping is consistent with the state of the online contentmanagement system), the content item may continue to be accessed throughthe mapping.

If the attempt fails, the previous version of the mapping is used toaccess the content item (operation 422). For example, the mapping may beoptimistically updated with a change to the content item, while acorresponding attempt to update the online content management systemwith the change may fail. While the mapping may not reflect the state ofthe online content management system, the previous version of themapping may provide a fallback to the state of the online contentmanagement system and enable use of the link in accessing the contentitem.

The mapping may continue to be maintained (operation 424) during use ofthe content item with the online content management system. If themapping is to be maintained, changes associated with the content itemare used to update the mapping and online content management system(operations 404-410), and links to the content item are provided usingthe identifier and mapping (operations 412-422). The mapping maycontinue to be used to track the content item while the content itemexists at the online content management system and/orlocation-independent links are used with content items in the onlinecontent management system.

FIG. 5 shows a computer system 500 in accordance with the disclosedembodiments. Computer system 500 may correspond to an apparatus thatincludes a processor 502, memory 504, storage 506, and/or othercomponents found in electronic computing devices. Processor 502 maysupport parallel processing and/or multi-threaded operation with otherprocessors in computer system 500. Computer system 500 may also includeinput/output (I/O) devices such as a keyboard 508, a mouse 510, and adisplay 512.

Computer system 500 may include functionality to execute variouscomponents of the present embodiments. In particular, computer system500 may include an operating system (not shown) that coordinates the useof hardware and software resources on computer system 500, as well asone or more applications that perform specialized tasks for the user. Toperform tasks for the user, applications may obtain the use of hardwareresources on computer system 500 from the operating system, as well asinteract with the user through a hardware and/or software frameworkprovided by the operating system.

In one or more embodiments, computer system 500 provides a system forfacilitating access to content. The system may include a write apparatusthat tracks a content item at an online content management system usingan identifier for the content item. For example, the write apparatus maymaintain a mapping of the identifier to the location of the content itemwithin the online content management system and/or update the mappingbased on changes associated with the content item's name, location,and/or contents. The system may also include a read apparatus that usesthe identifier to provide a link to the content item. The link mayenable access to the content item from an electronic deviceindependently of the location of the content item.

In addition, one or more components of computer system 500 may beremotely located and connected to the other components over a network.Portions of the present embodiments (e.g., write apparatus, readapparatus, electronic devices, etc.) may also be located on differentnodes of a distributed system that implements the embodiments. Forexample, the present embodiments may be implemented using a cloudcomputing system that provides location-independent links to contentitems within an online content management system to a set of remoteelectronic devices.

The foregoing descriptions of various embodiments have been presentedonly for purposes of illustration and description. They are not intendedto be exhaustive or to limit the present invention to the formsdisclosed. Accordingly, many modifications and variations will beapparent to practitioners skilled in the art. Additionally, the abovedisclosure is not intended to limit the present invention.

What is claimed is:
 1. A computer-implemented method for facilitatingaccess to content, comprising: tracking a content item at an onlinecontent management system using an identifier for the content item; andusing the identifier to provide a link to the content item, wherein thelink enables access to the content item from an electronic deviceindependently of a location of the content item within the onlinecontent management system.
 2. The computer-implemented method of claim1, wherein tracking the content item at the online content managementsystem using the identifier involves: maintaining a mapping of theidentifier to the location of the content item.
 3. Thecomputer-implemented method of claim 2, wherein maintaining the mappingof the identifier to the location of the content item involves: updatingthe mapping based on a change associated with at least one of: renamingof the content item; moving of the content item; deletion of the contentitem from a user account with the online content management system; andcopying of the content item.
 4. The computer-implemented method of claim3, wherein tracking the content item at the online content managementsystem using the identifier further involves: updating the onlinecontent management system with the change after the mapping is updated.5. The computer-implemented method of claim 3, wherein updating themapping based on the change involves: writing the mapping to a previousversion of the mapping; and writing the change to the mapping.
 6. Thecomputer-implemented method of claim 5, wherein using the identifier toprovide the link to the content item involves: storing the identifier onthe electronic device; attempting to access the content item using thestored identifier and the mapping; and upon detecting a failure toaccess the content item using the mapping, using the previous version ofthe mapping to access the content item.
 7. The computer-implementedmethod of claim 6, wherein storing the identifier on the electronicdevice involves: encrypting the identifier using a key associated with auser of the electronic device.
 8. The computer-implemented method ofclaim 1, wherein the link is provided based on user input associatedwith the content item.
 9. The computer-implemented method of claim 8,wherein the user input specifies at least one of: enabling of the link;and disabling of the link.
 10. A system for facilitating access tocontent, comprising: a write apparatus configured to track a contentitem at an online content management system using an identifier for thecontent item; and a read apparatus configured to use the identifier toprovide a link to the content item, wherein the link enables access tothe content item from an electronic device independently of a locationof the content item within the online content management system.
 11. Thesystem of claim 10, wherein tracking the content item at the onlinecontent management system using the identifier involves: maintaining amapping of the identifier to the location of the content item.
 12. Thesystem of claim 11, wherein maintaining the mapping of the identifier tothe location of the content item involves: updating the mapping based ona change associated with at least one of: renaming of the content item;moving of the content item; deletion of the content item from a useraccount with the online content management system; and copying of thecontent item.
 13. The system of claim 12, wherein tracking the contentitem at the online content management system using the identifierfurther involves: updating the online content management system with thechange after the mapping is updated.
 14. The system of claim 12, whereinupdating the mapping based on the change involves: writing the mappingto a previous version of the mapping; and writing the change to themapping.
 15. The system of claim 14, wherein using the identifier toprovide the link to the content item involves: storing the identifier onthe electronic device; attempting to access the content item using thestored identifier and the mapping; and upon detecting a failure toaccess the content item using the mapping, using the previous version ofthe mapping to access the content item.
 16. The system of claim 10,wherein the link is provided based on user input associated with thecontent item.
 17. A computer-readable storage medium storinginstructions that when executed by a computer cause the computer toperform a method for facilitating access to content, the methodcomprising: tracking a content item at an online content managementsystem using an identifier for the content item; and using theidentifier to provide a link to the content item, wherein the linkenables access to the content item from an electronic deviceindependently of a location of the content item within the onlinecontent management system.
 18. The computer-readable storage medium ofclaim 17, wherein tracking the content item at the online contentmanagement system using the identifier involves: maintaining a mappingof the identifier to the location of the content item.
 19. Thecomputer-readable storage medium of claim 18, wherein maintaining themapping of the identifier to the location of the content item involves:updating the mapping based on a change associated with at least one of:renaming of the content item; moving of the content item; deletion ofthe content item from a user account with the online content managementsystem; and copying of the content item.
 20. The computer-readablestorage medium of claim 19, wherein tracking the content item at theonline content management system using the identifier further involves:updating the online content management system with the change after themapping is updated.
 21. The computer-readable storage medium of claim19, wherein updating the mapping based on the change involves: writingthe mapping to a previous version of the mapping; and writing the changeto the mapping.
 22. The computer-readable storage medium of claim 21,wherein using the identifier to provide the link to the content iteminvolves: storing the identifier on the electronic device; attempting toaccess the content item using the stored identifier and the mapping; andupon detecting a failure to access the content item using the mapping,using the previous version of the mapping to access the content item.